package api

// handler
// svc.CreateComment()， 请问这个是grpc调用吗？

import (
	"gitee.com/go-course/go12/vblog/apps/comment"
	"gitee.com/go-course/go12/vblog/apps/token"
	"gitee.com/go-course/go12/vblog/ioc"
	"github.com/gin-gonic/gin"
)

func init() {
	ioc.ApiHandler().Registry(&CommentApiHandler{})
}

// 不适用接口, 直接定义Gin的一个handlers
// 什么是Gin的Handler  HandlerFunc
// HandlerFunc defines the handler used by gin middleware as return value.
// type HandlerFunc func(*Context)
// HandleFunc 只是定义 如何处理 HTTP 的请求与响应

type CommentApiHandler struct {
	// 依赖控制器
	svc comment.Service
}

func (t *CommentApiHandler) Name() string {
	return token.AppName
}

func (t *CommentApiHandler) Init() error {
	t.svc = ioc.Controller().Get(comment.AppName).(comment.Service)
	return nil
}

// Logout HandleFunc
func (h *CommentApiHandler) Logout(c *gin.Context) {
	// 调用 impl对象的 CreateComment 这个是进程内 模块间调用
	h.svc.CreateComment(c.Request.Context(), &comment.CreateCommentRequest{})
}
